home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
sh5x
/
sh56b.d64
/
matrix 2.6
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
15KB
|
698 lines
100 REM *****************************
110 REM * V 2.6 *
120 REM * MATRIX RECHNER MIT EDITOR *
130 REM * *
140 REM * (C)1988 VIKTOR K.ANDOR *
150 REM * *
160 REM * EDUARD MOERIKE-STR.6 *
170 REM * 2970 EMDEN TEL:44736 *
180 REM * *
190 REM *****************************
200 :
210 :
220 POKE 55,226:POKE 56,159:CLR:POKE 788,52
230 FOR I=0 TO 25:READ X:POKE 40931+I,X:NEXT I
240 DATA 032,253,174,032,158,183,138,072
250 DATA 032,253,174,032,158,183,104,168
260 DATA 024,032,240,255,032,253,174,076
270 DATA 164,170
280 AT=40931
290 DEFFNE(Y)=INT(1E7*Y+.5)/1E7
300 FOR I=0 TO 42:READ A:POKE 24576+I,A:NEXT I
310 DATA 169,000,160,004,133,250,132,251
320 DATA 169,232,160,007,133,252,132,253
330 DATA 169,160,133,254,160,000,165,254
340 DATA 145,250,230,250,208,002,230,251
350 DATA 165,250,197,252,165,251,229,253
360 DATA 144,230,096
370 POKE 53280,11:POKE 53281,0:POKE 53265,11:PRINT"[129][147]":SYS 24576
380 B1$="[146][159][221] [221] [221] [221] [221] [221] [221] [221] [221] [221] [221]"
390 B2$="[146][159][171][192][219][192][219][192][219][192][219][192][219][192][219][192][219][192][219][192][219][192][179]"
400 B0$="[129]":B3$="":B4$="[158]":B5$="":B6$="[154]":B8$="+ - * /?"
410 B9$="Q X ? Y?"
420 F1$="0102030405060708091011121314151617181920"
430 V1$="0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 "
440 V2$="1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 "
450 PRINTB0$" 0 0 0 0 0 0 0 0 0 1 VIKTOR K.ANDOR"
460 PRINTB0$" 1 2 3 4 5 6 7 8 9 0 1988"
470 PRINTB0$" [146][159][176][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][174]"
480 PRINTB0$" 01";B1$
490 PRINTB0$" ";B2$
500 PRINTB0$" 02";B1$
510 PRINTB0$" ";B2$
520 PRINTB0$" 03";B1$
530 PRINTB0$" ";B2$
540 PRINTB0$" 04";B1$
550 PRINTB0$" ";B2$
560 PRINTB0$" 05";B1$
570 PRINTB0$" ";B2$
580 PRINTB0$" 06";B1$
590 PRINTB0$" ";B2$
600 PRINTB0$" 07";B1$
610 PRINTB0$" ";B2$
620 PRINTB0$" 08";B1$
630 PRINTB0$" ";B2$
640 PRINTB0$" 09";B1$
650 PRINTB0$" ";B2$
660 PRINTB0$" 10";B1$
670 PRINTB0$" [146][159][173][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][189]"
680 GOSUB 6860
690 FOR I=4 TO 21 STEP 2:SYS AT,26,I,B3$" ":NEXT I
700 PRINT"[159]"
710 SYS AT,25,02,"[176][192][192][192][192][192][192][192][192][192][192][192][192][174]"
720 SYS AT,25,22,"[173][192][192][192][192][192][192][192][192][192][192][192][192][189]"
730 GOSUB 6860
740 FOR I=4 TO 21 STEP 2:SYS AT,26,I,B3$" ":NEXT I
750 PRINT"[159]"
760 FOR I=3 TO 21 :SYS AT,25,I,"[221]":SYS AT,38,I,"[221]":NEXT I:POKE 53265,27
770 DIM Z(1,20,20),C(20,20),M(1,20,20),W(20):MA=0:TR=1
780 GET A$:IF A$=""THEN 780
790 IF A$="I" THEN 1060
800 IF A$="C" THEN 1950
810 IF A$="D" THEN 2220
820 IF A$="E" THEN GOSUB 6970:GOTO 910
830 IF A$="Q" THEN CL=0:GOSUB 6770
840 IF A$="M" THEN 2860
850 IF A$="R" THEN 2970
860 IF A$="S" THEN 3100
870 IF A$="W" THEN 3240
880 IF A$="-" THEN 3600
890 GOTO 780
900 :
910 GET A$:IF A$=""THEN 910
920 IF A$="+" THEN 3700
930 IF A$="-" THEN 3830
940 IF A$="*" THEN 3960
950 IF A$="/" THEN 4290
960 IF A$="Q" THEN GOSUB 6860:K=0:GOTO 780
970 IF A$="I" THEN 4200
980 IF A$="D" THEN 4070
990 IF A$="T" THEN 5550
1000 IF A$="S"THEN 5710
1010 IF A$="_"THEN 3350
1020 GOTO 910
1030 :
1040 REM INPUT
1050 :
1060 SYS AT,26,3,B3$;B9$:O=5
1070 GET A$:IF A$=""THEN 1070
1080 IF A$="X" THEN 1150
1090 IF A$="Y" THEN 1290
1100 IF A$="Q" THEN 1400
1110 GOTO 1070
1120 :
1130 REM INPUT X
1140 :
1150 GOSUB 6410
1160 SYS AT,26,3,B3$" "B4$"MATRIX X":SYS AT,1,0,"X"
1170 GOSUB 1430:GOSUB 1490:GOSUB 6550
1180 MX=VAL(M$):F=MX
1190 GOSUB 1440:GOSUB 1490:GOSUB 6550
1200 NX=VAL(M$):V=NX
1210 GOSUB 1460
1220 IF W=1 THEN 1170
1230 KX=MX:KY=NX:P=MX:R=NX
1240 DA=MA
1250 GOTO 1390
1260 :
1270 REM INPUT Y
1280 :
1290 GOSUB 6410
1300 SYS AT,26,3,B3$" "B4$"MATRIX Y":SYS AT,1,0,"Y"
1310 GOSUB 1430:GOSUB 1490:GOSUB 6550
1320 MY=VAL(M$):F=MY
1330 GOSUB 1440:GOSUB 1490:GOSUB 6550
1340 NY=VAL(M$):V=NY
1350 GOSUB 1460
1360 IF W=1 THEN 1310
1370 KX=MY:KY=NY:P=MY:R=NY
1380 DA=TR
1390 XY=5:GOSUB 6460:GOSUB 6550:GOSUB 5360
1400 SYS AT,26,3,B3$"I = MATRIX "
1410 GOTO 780
1420 :
1430 SYS AT,3,23,B0$"M=?":SA=2:RETURN
1440 SYS AT,3,23,B0$"N=?":SA=2:RETURN
1450 :
1460 IF F>20 OR V>20 OR F<1 OR V<1 THEN GOSUB 6370:W=1:RETURN
1470 W=0:RETURN
1480 :
1490 M$="":SZ=0
1500 GET N$:IF N$=""THEN 1500
1510 IF ASC(N$)=13 THEN RETURN
1520 IF ASC(N$)=20 AND SZ>=1 THEN SZ=SZ-1:M$=LEFT$(M$,SZ):GOTO 1570
1530 IF ASC(N$)=69 OR ASC(N$)=45 OR ASC(N$)=46 THEN 1550
1540 IF ASC(N$)>57 OR ASC(N$)<48 THEN 1500
1550 M$=M$+N$:SZ=SZ+1
1560 IF SZ>SA THEN SZ=SA:M$=LEFT$(M$,SZ)
1570 GOSUB 1610
1580 SYS AT,O,23,B0$;M$
1590 GOTO 1500
1600 :
1610 SYS AT,O,23,B0$" "
1620 RETURN
1630 :
1640 IF F1>3 AND Y<=10 THEN GOSUB 1760:Y=Y-1:F1=F1-2:GOTO 2560
1650 IF F1>3 AND Y>1 THEN Y=Y-1:Y1=Y-10:GOSUB 1800:GOTO 2560
1660 GOTO 2600
1670 IF F1<21 AND Y<F THEN GOSUB 1760:Y=Y+1:F1=F1+2:GOTO 2560
1680 IF F>10 AND Y<F THEN GOSUB 1790:Y=Y+1:GOTO 2560
1690 GOTO 2600
1700 IF V1>4 AND X<=10 THEN GOSUB 1760:X=X-1:V1=V1-2:GOTO 2560
1710 IF V1>4 AND X>1 THEN X=X-1:GOSUB 1840:GOTO 2560
1720 GOTO 2600
1730 IF V1<22 AND X<V THEN GOSUB 1760:X=X+1:V1=V1+2:GOTO 2560
1740 IF V>10 AND X<V THEN X=X+1:GOSUB 1840:GOTO 2560
1750 GOTO 2600
1760 IF ABS(Z(DA,Y,X))>1E-5 THEN SYS AT,V1,F1,B5$" ":RETURN
1770 SYS AT,V1,F1,B4$" ":RETURN
1780 :
1790 Y1=Y-9
1800 FOR I=3 TO 21 STEP 2
1810 SYS AT,1,I,B0$;MID$(F1$,Y1*2+1,2):Y1=Y1+1:NEXT I
1820 RETURN
1830 :
1840 IF X<=10 THEN 1890
1850 SYS AT,4,0,B0$;MID$(V1$,X*2-19,19)
1860 SYS AT,4,1,B0$;MID$(V2$,X*2-19,19)
1870 RETURN
1880 :
1890 SYS AT,4,0,B0$;MID$(V1$,1,19)
1900 SYS AT,4,1,B0$;MID$(V2$,1,19)
1910 RETURN
1920 :
1930 REM CLEAR
1940 :
1950 SYS AT,26,7,B3$;B9$
1960 GET A$:IF A$=""THEN 1960
1970 IF A$="X" THEN 2040
1980 IF A$="Y" THEN 2140
1990 IF A$="Q" THEN 2090
2000 GOTO 1960
2010 :
2020 REM CLEAR X
2030 :
2040 IF MX=0 THEN F$="X":GOSUB 6580:GOTO 2090
2050 SYS AT,26,7,B3$" "B4$"CLEAR X"
2060 CL=1:GOSUB 6770:IF A$="N" THEN 2090
2070 KX=MX:KY=NX:XY=5:DA=MA:P=MX:R=NX:GOSUB 5360
2080 GOSUB 6410
2090 SYS AT,26,7,B3$"C = CLEAR "
2100 GOTO 780
2110 :
2120 REM CLEAR Y
2130 :
2140 IF MY=0 THEN F$="Y":GOSUB 6580:GOTO 2090
2150 SYS AT,26,7,B3$" "B4$"CLEAR Y"
2160 CL=1:GOSUB 6770:IF A$="N" THEN 2190
2170 KX=MY:KY=NY:XY=5:DA=TR:P=MY:R=NY:GOSUB 5360
2180 GOSUB 6410
2190 GOTO 2090
2200 :
2210 REM DATEN EINGABE
2220 :
2230 SYS AT,26,5,B3$;B9$:O=5
2240 GET A$:IF A$=""THEN 2240
2250 IF A$="X" THEN 2320
2260 IF A$="Y" THEN 2420
2270 IF A$="Q" THEN 2370
2280 GOTO 2240
2290 :
2300 REM DATA X
2310 :
2320 IF MX=0 THEN F$="X":GOSUB 6580:GOTO 2370
2330 SYS AT,26,5,B3$" "B4$"DATA X ":SYS AT,1,0,"X"
2340 KX=MX:KY=NX:GOSUB 6410:GOSUB 6460
2350 F=MX:V=NX
2360 DA=MA:GOSUB 2500
2370 SYS AT,26,5,B3$"D = DATA "
2380 GOTO 780
2390 :
2400 REM DATA Y
2410 :
2420 IF MY=0 THEN F$="Y":GOSUB 6580:GOTO 2370
2430 SYS AT,26,5,B3$" "B4$"DATA Y ":SYS AT,1,0,"Y"
2440 F=MY:V=NY:KX=MY:KY=NY:GOSUB 6410:GOSUB 6460
2450 DA=TR:GOSUB 2500
2460 SYS AT,26,5,B3$"D = DATA "
2470 IF MX<>0 THEN F=MX:V=NX:KX=MX:KY=NX:GOSUB 6410:GOSUB 6460:SYS AT,1,0,"X"
2480 GOTO 780
2490 :
2500 F1=3:V1=4:SA=15
2510 GOSUB 1890
2520 Y1=0:GOSUB 1800
2530 FOR Y=1 TO F
2540 FOR X=1 TO V
2550 IF X>=10 THEN V1=22:GOSUB 1840
2560 SYS AT,V1,F1,"?"
2570 GOSUB 1610
2580 M$=STR$(FNE(Z(DA,Y,X)))
2590 SYS AT,3,23,B0$;"X=";M$
2600 GET N$:IF N$="" THEN 2600
2610 IF ASC(N$)=45 OR ASC(N$)=46 THEN 2630
2620 IF ASC(N$)<48 OR ASC(N$)>57 THEN 2650
2630 M$="":SZ=0:GOSUB 1550:Z(DA,Y,X)=VAL(M$)
2640 IF ASC(N$)= 13 THEN 2720
2650 IF ASC(N$)=147 OR ASC(N$)=19 THEN GOSUB 1890:GOTO 2800
2660 IF ASC(N$)=145 THEN 1640
2670 IF ASC(N$)= 17 THEN 1670
2680 IF ASC(N$)=157 THEN 1700
2690 IF ASC(N$)= 29 THEN 1730
2700 IF ASC(N$)= 13 THEN 2720
2710 GOTO 2600
2720 GOSUB 1760
2730 V1=V1+2
2740 NEXT X
2750 GOSUB 1890
2760 V1=4
2770 F1=F1+2
2780 IF Y>=10 AND Y<F THEN F1=21:GOSUB 1790
2790 NEXT Y
2800 Y1=0:GOSUB 1800
2810 GOSUB 6550:GOSUB 6460
2820 RETURN
2830 :
2840 REM M=X
2850 :
2860 IF MX=0 THEN F$="X":GOSUB 6580:GOTO 2920
2870 SYS AT,30,13,B4$"X [192]>M"
2880 MM=MX:NM=NX
2890 FOR X=1 TO MX
2900 FOR Y=1 TO NX
2910 M(0,X,Y)=Z(MA,X,Y):NEXT Y:NEXT X
2920 SYS AT,30,13,B3$"X [192]>M"
2930 GOTO 780
2940 :
2950 REM X=M
2960 :
2970 IF MM=0 THEN F$="M":GOSUB 6580:GOTO 3050
2980 SYS AT,30,15,B4$"M [192]>X":SYS AT,1,0,"X"
2990 GOSUB 6410
3000 MX=MM:NX=NM
3010 KX=MM:KY=NM:GOSUB 6460
3020 FOR X=1 TO MM
3030 FOR Y=1 TO NM
3040 Z(MA,X,Y)=M(0,X,Y):NEXT Y:NEXT X
3050 SYS AT,30,15,B3$"M [192]>X"
3060 GOTO 780
3070 :
3080 REM X=X+M
3090 :
3100 IF MM=0 THEN F$="M":GOSUB 6580:GOTO 3190
3110 SYS AT,30,17,B4$"X+M [192]>M":SYS AT,1,0,"X"
3120 IF MM=MX OR NM=NX THEN 3140
3130 GOSUB 6620:GOTO 3190
3140 FOR X=1 TO MM
3150 FOR Y=1 TO NM
3160 M(0,X,Y)=M(0,X,Y)+Z(MA,X,Y)
3170 NEXT Y
3180 NEXT X
3190 SYS AT,30,17,B3$"X+M [192]>M"
3200 GOTO 780
3210 :
3220 REM VERTAUSCHEN VON X,Y
3230 :
3240 IF MX=0 AND MY=0 THEN F$="":GOSUB 6580:GOTO 3300
3250 SYS AT,30,19,B4$"X< [192] >Y":SYS AT,1,0,"X"
3260 C=MA:MA=TR:TR=C
3270 C=MX:MX=MY:MY=C:C=NX:NX=NY:NY=C
3280 KX=MX:KY=NX:GOSUB 6410
3290 IF MX<>0 THEN GOSUB 6460
3300 SYS AT,30,19,B3$"X< [192] >Y"
3310 GOTO 780
3320 :
3330 REM DREHEN
3340 :
3350 IF MX=0 THEN F$="X":GOSUB 6580:GOSUB 6860:GOTO 780
3360 SYS AT,26,21,B3$"Q _ ? ^?"
3370 GET A$:IF A$="" THEN 3370
3380 IF A$="_" THEN SYS AT,26,21,B3$" "B4$"_"B3$" ":GOTO 3420
3390 IF A$="^" THEN SYS AT,26,21,B3$" "B4$"^"B3$" ":GOTO 3460
3400 IF A$="Q" THEN 3550
3410 GOTO 3370
3420 IF MX<>NX THEN GOSUB 6530:GOSUB 6740:GOTO 3550
3430 G=MX
3440 FOR X=1 TO MX:FOR Y=1 TO MX:C(X,Y)=Z(MA,X,Y):NEXT Y:NEXT X
3450 FOR X=1 TO MX:FOR Y=1 TO MX:Z(MA,X,Y)=C(Y,G):NEXT Y:G=G-1:NEXT X
3460 GOSUB 3470:GOTO 3550
3470 KX=MX:KY=NX:X=1:Y=1
3480 IF KX>10 THEN KX=10
3490 IF KY>10 THEN KY=10
3500 FOR F1=3 TO 2+2*KX STEP 2
3510 FOR V1=4 TO 3+2*KY STEP 2
3520 IF ABS(Z(MA,X,Y))>1E-5 THEN SYS AT,V1,F1,B5$" ":GOTO 3540
3530 SYS AT,V1,F1,B4$" "
3540 Y=Y+1:NEXT V1:Y=1:X=X+1:NEXT F1:RETURN
3550 SYS AT,26,21,B3$"_ = DREHEN X"
3560 GOTO 910
3570 :
3580 REM VERTAUSCHEN DER VORZEICHEN
3590 :
3600 IF MX=0 THEN F$="X":GOSUB 6580:GOTO 3650
3610 SYS AT,30,21,B4$"+/- [192]>X"
3620 FOR X=1 TO MX
3630 FOR Y=1 TO NX
3640 Z(MA,X,Y)=Z(MA,X,Y)*-1:NEXT Y:NEXT X
3650 SYS AT,30,21,B3$"+/- [192]>X"
3660 GOTO 780
3670 :
3680 REM X=X+Y
3690 :
3700 IF MX=0 OR MY=0 THEN F$="X ODER Y":GOSUB 6580:GOSUB 6860:GOTO 780
3710 IF MX<>MY OR NX<>NY THEN GOSUB 6530:GOSUB 6620:GOTO 3780
3720 SYS AT,30,3,B4$"X+Y [192]>X":SYS AT,1,0,"X"
3730 FOR X=1 TO MX
3740 FOR Y=1 TO NX
3750 Z(MA,X,Y)=Z(MA,X,Y)+Z(TR,X,Y)
3760 NEXT Y
3770 NEXT X
3780 SYS AT,30,3,B3$"X+Y [192]>X"
3790 GOTO 910
3800 :
3810 REM X=X-Y
3820 :
3830 IF MX=0 OR MY=0 THEN F$="X ODER Y":GOSUB 6580:GOSUB 6860:GOTO 780
3840 IF MX<>MY OR NX<>NY THEN GOSUB 6530:GOSUB 6620:GOTO 3910
3850 SYS AT,30,5,B4$"X-Y [192]>X":SYS AT,1,0,"X"
3860 FOR X=1 TO MX
3870 FOR Y=1 TO NX
3880 Z(MA,X,Y)=Z(MA,X,Y)-Z(TR,X,Y)
3890 NEXT Y
3900 NEXT X
3910 SYS AT,30,5,B3$"X-Y [192]>X"
3920 GOTO 910
3930 :
3940 REM X=X*Y
3950 :
3960 IF MX=0 OR MY=0 THEN F$="X ODER Y":GOSUB 6580:GOSUB 6860:GOTO 780
3970 SYS AT,30,7,B4$"X*Y [192]>X"
3980 GOSUB 6240
3990 GOSUB 6410
4000 K=K+1:IF K=2 THEN K=0:GOSUB 6860:GOSUB 3470:GOTO 2350
4010 KX=MX:KY=NX:GOSUB 6460
4020 SYS AT,30,7,B3$"X*Y [192]>X":SYS AT,1,0,"X":K=0
4030 GOTO 910
4040 :
4050 REM DETERMINANTE
4060 :
4070 IF MX=0 THEN F$="X":GOSUB 6580:GOSUB 6860:GOTO 780
4080 IF MX<>NX THEN GOSUB 6530:GOSUB 6740:GOTO 910
4090 SYS AT,30,17,B4$"DETERM.X"
4100 IF MX=1 AND NX=1 THEN DE=Z(MA,1,1):GOTO 4120
4110 XY=1:P=MX:R=NX:GOSUB 6030
4120 SYS AT,3,23,B0$"DETERMINANTE=";DE
4130 SYS AT,30,17,B3$"DETERM.X"
4140 GET A$:IF A$="" THEN 4140
4150 GOSUB 6550
4160 GOTO 920
4170 :
4180 REM REZIPROKWERT VON X
4190 :
4200 IF MX=0 THEN F$="X":GOSUB 6580:GOSUB 6860:GOTO 780
4210 IF MX<>NX THEN GOSUB 6530:GOSUB 6740:GOTO 910
4220 SYS AT,30,13,B4$"INVERS X":SYS AT,1,0,"X"
4230 XY=1:DA=MA:IN=MX:P=MX:R=NX:GOSUB 4740
4240 SYS AT,30,13,B3$"INVERS X":SYS AT,1,0,"X"
4250 GOTO 910
4260 :
4270 REM X=X/Y
4280 :
4290 IF MX=0 OR MY=0 THEN F$="X ODER Y":GOSUB 6580:GOSUB 6860:GOTO 780
4300 IF MY<>NY THEN GOSUB 6530:GOSUB 6740:GOTO 4420
4310 IF NX<>NY THEN GOSUB 6530:GOSUB 6620:GOTO 4420
4320 SYS AT,30,9,B4$"X*IY ->X"
4330 :
4340 XY=2:DA=TR:IN=MY:P=MY:R=NY
4350 FOR X=1 TO MY:FOR Y=1 TO NY:M(1,X,Y)=Z(TR,X,Y):NEXT Y:NEXT X
4360 GOSUB 4740
4370 GOSUB 6240
4380 P=MY:R=NY
4390 FOR X=1 TO MY:FOR Y=1 TO NY:Z(TR,X,Y)=M(1,X,Y):NEXT Y:NEXT X
4400 GOSUB 6410
4410 KX=MX:KY=NX:GOSUB 6460
4420 SYS AT,30,9,B3$"X*IY ->X":SYS AT,1,0,"X"
4430 GOTO 910
4440 :
4450 REM SUBRUTIN ZUM REZIPROKWERT
4460 :
4470 K=1:FOR X=1 TO CX
4480 C(X,X)=C(X,X)+1
4490 NEXT X
4500 B=CX
4510 H=B
4520 D=C(H,H)-1
4530 IF D=0 THEN K=0:RETURN
4540 GOSUB 4620
4550 B=B-1
4560 IF B>0 THEN 4510
4570 FOR X=1 TO CX
4580 C(X,X)=C(X,X)-1
4590 NEXT X
4600 RETURN
4610 :
4620 FOR F=1 TO CX
4630 H=B
4640 C(H,F)=C(H,F)/D
4650 NEXT F
4660 FOR E=1 TO CX
4670 IF B=E THEN 4720
4680 H=B:D=C(E,B)
4690 FOR F=1 TO CX
4700 C(E,F)=C(E,F)-D*C(B,F)
4710 NEXT F
4720 NEXT E:RETURN
4730 :
4740 W=0:CX=IN:DR=0:GOSUB 5360:IF IN=1 THEN GOSUB 4470:GOTO 4960
4750 FOR I=IN-1 TO 2 STEP-1
4760 IF C(I,I)=0 OR ABS(C(I,I))<ABS(C(I-1,I))THEN 4790
4770 NEXT I
4780 GOTO 4800
4790 DR=1:GOSUB 5410
4800 FOR X=0 TO IN-1:W(X)=0:NEXT X
4810 IF C(1 , 1)=0 THEN GOSUB 4990
4820 IF C(IN,IN)=0 THEN GOSUB 5080
4830 IF IN>2 THEN GOSUB 5220
4840 GOSUB 4470
4850 IF K=0 THEN GOSUB 6830:RETURN
4860 IF IN<3 THEN 4930
4870 FOR I=2 TO IN-1
4880 FOR X=1 TO IN
4890 IF W(I)=0 THEN 4910
4900 C=C(X,W(I)):C(X,W(I))=C(X,I):C(X,I)=C
4910 NEXT X
4920 NEXT I
4930 IF W(1)<>0 THEN PV=1:W=IN:GOSUB 5170
4940 IF W(0)<>0 THEN PV=0:W=1:GOSUB 5170
4950 IF DR<>0 THEN GOSUB 5410
4960 XY=XY+2:GOSUB 5360:XY=XY-2
4970 RETURN
4980 :
4990 FOR X=1 TO IN
5000 IF C(1,X)=0 THEN 5020
5010 W(0)=X:GOTO 5030
5020 NEXT X
5030 FOR X=1 TO IN
5040 C=C(X,W(0)):C(X,W(0))=C(X,1):C(X,1)=C
5050 NEXT X
5060 RETURN
5070 :
5080 FOR X=IN TO 1 STEP-1
5090 IF C(IN,X)=0THEN 5110
5100 W(1)=X:GOTO 5120
5110 NEXT X
5120 FOR X=1 TO IN
5130 C=C(X,W(1)):C(X,W(1))=C(X,IN):C(X,IN)=C
5140 NEXT X
5150 RETURN
5160 :
5170 FOR X=1 TO IN
5180 C=C(W(PV),X):C(W(PV),X)=C(W,X):C(W,X)=C
5190 NEXT X
5200 RETURN
5210 :
5220 FOR I=IN-1 TO 2 STEP-1
5230 IF C(I,I)=0 OR ABS(C(I,I))<ABS(C(I-1,I)) THEN 5250
5240 GOTO 5330
5250 FOR X=I-1 TO 1 STEP-1
5260 IF C(X,I)=0 OR ABS(C(X,I))<ABS(C(X+1,I)) THEN 5320
5270 W(I)=X
5280 FOR Y=1 TO IN
5290 C=C(X,Y):C(X,Y)=C(I,Y):C(I,Y)=C
5300 NEXT Y
5310 X=1
5320 NEXT X
5330 NEXT I
5340 RETURN
5350 :
5360 FOR X=1 TO P:FOR Y=1 TO R
5370 ON XY GOSUB 5470,5480,5490,5500,5510
5380 NEXT Y:NEXT X
5390 RETURN
5400 :
5410 G=IN:FOR X=1 TO IN:FOR Y=1 TO IN
5420 Z(DA,X,Y)=C(Y,G)
5430 NEXT Y:G=G-1:NEXT X
5440 GOSUB 5360
5450 RETURN
5460 :
5470 C(X,Y)=Z(MA,X,Y):RETURN
5480 C(X,Y)=Z(TR,X,Y):RETURN
5490 Z(MA,X,Y)=C(X,Y):RETURN
5500 Z(TR,X,Y)=C(X,Y):RETURN
5510 Z(DA,X,Y)=0:RETURN
5520 :
5530 REM TRANSPOSITION
5540 :
5550 IF MX=0 THEN F$="X":GOSUB 6580:GOSUB 6860:GOTO 780
5560 SYS AT,30,15,B4$"TRANSP.X"
5570 XY=1:P=MX:R=NX:GOSUB 5360
5580 FOR X=1 TO MX
5590 FOR Y=1 TO NX
5600 Z(MA,Y,X)=C(X,Y)
5610 NEXT Y
5620 NEXT X
5630 C=MX:MX=NX:NX=C
5640 GOSUB 6410
5650 KX=MX:KY=NX:GOSUB 6460
5660 SYS AT,30,15,B3$"TRANSP.X":SYS AT,1,0,"X"
5670 GOTO 910
5680 :
5690 REM SKALAR OPERATION
5700 :
5710 IF MX=0 THEN F$="X":GOSUB6580:GOSUB6860:GOTO 780
5720 SYS AT,26,19,B3$"Q ";B8$
5730 GET A$:IF A$="" THEN 5730
5740 IF A$="+"THEN U=1:W=1:GOTO 5810
5750 IF A$="-"THEN U=2:W=3:GOTO 5810
5760 IF A$="*"THEN U=3:W=5:GOTO 5810
5770 IF A$="/"THEN U=3:GOTO 5860
5780 IF A$="Q"THEN GOTO 5980
5790 GOTO 5730
5800 :
5810 SYS AT,29+W,19,B4$;MID$(B8$,W,1):GOSUB 5910
5820 FOR X=1 TO MX:FOR Y=1 TO NX
5830 ON U GOSUB 5950,5960,5970
5840 NEXT Y:NEXT X
5850 GOTO 5980
5860 SYS AT,36,19,B4$"/":GOSUB 5910
5870 XY=1:DA=MA:IN=MX:P=MX:R=NX
5880 GOSUB 4740
5890 GOTO 5820
5900 :
5910 SYS AT,3,23,B0$"SKALAR=":SA=15:O=10:GOSUB 1490
5920 N=VAL(M$)
5930 GOSUB 6550:RETURN
5940 :
5950 Z(MA,X,Y)=N+Z(MA,X,Y):RETURN
5960 Z(MA,X,Y)=N-Z(MA,X,Y):RETURN
5970 Z(MA,X,Y)=N*Z(MA,X,Y):RETURN
5980 SYS AT,26,19,B3$"S = SKALAR X"
5990 GOTO 910
6000 :
6010 REM SUBRUTIN ZUR DETERMINANTE
6020 :
6030 GOSUB 5360
6040 K=0:B=P:E=1
6050 I=B
6060 D=C(I,I):IF D=0 THEN GOSUB 6110
6070 IF K=1 THEN E=0:GOTO 6100
6080 E=D*E:GOSUB 6180
6090 B=B-1:IF B>1 THEN 6050
6100 E=E*C(1,1):DE=E:RETURN
6110 FOR F=1 TO B-1
6120 D=C(F,I):IF D<>0 THEN 6160
6130 NEXT F
6140 K=1
6150 RETURN
6160 FOR G=1 TO B:C(I,G)=C(I,G)+C(F,G):NEXT G
6170 RETURN
6180 FOR F=1 TO B-1:L=C(F,I)/D:FOR G=1 TO B-1:C(F,G)=C(F,G)-L*C(I,G)
6190 NEXT G:NEXT F
6200 RETURN
6210 :
6220 REM SUBRUTIN ZUM PRODUKT
6230 :
6240 IF NX<>MY THEN GOSUB 6530:GOSUB 6670:RETURN
6250 FOR X=1 TO MX
6260 FOR Y=1 TO NY
6270 C(X,Y)=0
6280 FOR Z=1 TO NX
6290 C(X,Y)=C(X,Y)+Z(MA,X,Z)*Z(TR,Z,Y)
6300 NEXT Z
6310 NEXT Y
6320 NEXT X
6330 XY=3:P=MX:R=NY:GOSUB 5360
6340 NX=NY
6350 RETURN
6360 :
6370 GOSUB 6530
6380 SYS AT,3,23,B0$"DEFINITION 1-20"
6390 GOTO 6540
6400 :
6410 FOR Y=3 TO 2+2*10 STEP 2
6420 FOR X=4 TO 3+2*10 STEP 2
6430 SYS AT,X,Y," ":NEXT X:NEXT Y
6440 RETURN
6450 :
6460 IF KX>10 THEN KX=10
6470 IF KY>10 THEN KY=10
6480 FOR Y=3 TO 2+2*KX STEP 2
6490 FOR X=4 TO 3+2*KY STEP 2
6500 SYS AT,X,Y,B6$" ":NEXT X:NEXT Y
6510 RETURN
6520 :
6530 SYS AT,3,23,B0$"ERROR !! "
6540 FOR I=1 TO 2000:NEXT I
6550 SYS AT,3,23,B0$" "
6560 RETURN
6570 :
6580 SYS AT,3,23,B0$"KEINE DEFINITION IN MATRIX ";F$
6590 GOSUB 6540
6600 RETURN
6610 :
6620 SYS AT,3,23,B0$"MATRIZEN VERSCHIEDENEN FORMATS"
6630 GOSUB 6540
6640 RETURN
6650 :
6660 GOSUB 6530
6670 SYS AT,3,23,B0$"(N) IN MATRIX X UND (M) IN MATRIX Y":FOR I=1 TO 900:NEXT I
6680 GOSUB 6540
6690 SYS AT,3,23,B0$"SIND UNGLEICH"
6700 GOSUB 6540
6710 RETURN
6720 :
6730 GOSUB 6530
6740 SYS AT,3,23,B0$"MATRIZ IST NICHT QUADRATISCH"
6750 GOTO 6700
6760 :
6770 SYS AT,3,23,B0$"SIND SIE SICHER ? J/N"
6780 GET A$:IF A$=""THEN 6780
6790 IF A$="J" AND CL=0 THEN GOSUB 6550:POKE 788,49:PRINT"[145][145][145]":END
6800 IF A$="J" AND CL=1 THEN GOSUB 6550:RETURN
6810 IF A$="N" THEN GOSUB 6550:RETURN
6820 GOTO 6780
6830 SYS AT,3,23,B0$"MATRIX IST SINGULAER"
6840 GOTO 6700
6850 :
6860 SYS AT,26,3,B3$"I = MATRIX "
6870 SYS AT,26,5,B3$"D = DATA "
6880 SYS AT,26,7,B3$"C = CLEAR "
6890 SYS AT,26,9,B3$"E = MENUE II"
6900 SYS AT,26,11,B3$"Q = QUIT "
6910 SYS AT,26,13,B3$"M = X [192]>M "
6920 SYS AT,26,15,B3$"R = M [192]>X "
6930 SYS AT,26,17,B3$"S = X+M [192]>M "
6940 SYS AT,26,19,B3$"W = X< [192] >Y "
6950 SYS AT,26,21,B3$"- = +/- [192]>X "
6960 RETURN
6970 SYS AT,26,3,B3$"+ = X+Y [192]>X"
6980 SYS AT,26,5,B3$"- = X-Y [192]>X"
6990 SYS AT,26,7,B3$"* = X*Y [192]>X"
7000 SYS AT,26,9,B3$"/ = X*IY [192]>X"
7010 SYS AT,26,13,B3$"I = INVERS X"
7020 SYS AT,26,15,B3$"T = TRANSP.X"
7030 SYS AT,26,17,B3$"D = DETERM.X"
7040 SYS AT,26,19,B3$"S = SKALAR X"
7050 SYS AT,26,21,B3$"_ = DREHEN X"
7060 RETURN